package org.liquidByte.trafficMustang.androidApp.services.proxy;

import org.liquidByte.trafficMustang.androidApp.proxy.Proxy;
import org.liquidByte.trafficMustang.androidApp.proxy.ProxyRuntimeException;
import org.liquidByte.trafficMustang.androidApp.proxy.RemoteException;
import org.liquidByte.trafficMustang.androidApp.services.TrechoService;
import org.liquidByte.trafficMustang.androidApp.services.dto.DeslocamentoDTO;
import org.liquidByte.trafficMustang.androidApp.services.dto.LocalizacaoDTO;
import org.liquidByte.trafficMustang.androidApp.services.dto.TrechoDTO;
import org.liquidByte.trafficMustang.androidApp.services.dto.TrechoLocalizacaoDTO;

public class TrechoProxy extends Proxy implements TrechoService {

	@Override
	public TrechoDTO[] get(DeslocamentoDTO deslocamento) throws RemoteException, ProxyRuntimeException {
		return this.invoke("trecho/get", TrechoDTO[].class, deslocamento);
	}

	@Override
	public void requisitar(DeslocamentoDTO deslocamento) throws RemoteException, ProxyRuntimeException {
		this.invoke("trecho/requisitar", deslocamento);
	}

	@Override
	public void confirmar(TrechoDTO trecho) throws RemoteException, ProxyRuntimeException {
		this.invoke("trecho/confirmar", trecho);
	}

	@Override
	public void negar(TrechoDTO trecho) throws RemoteException, ProxyRuntimeException {
		this.invoke("trecho/negar", trecho);
	}

	@Override
	public void cancelar(TrechoDTO trecho) throws RemoteException, ProxyRuntimeException {
		this.invoke("trecho/cancelar", trecho);
	}

	@Override
	public void embarque(LocalizacaoDTO localizacao, TrechoDTO trecho) throws RemoteException, ProxyRuntimeException {
		TrechoLocalizacaoDTO dto = new TrechoLocalizacaoDTO();
		dto.setLocalizacao(localizacao);
		dto.setTrecho(trecho);
		
		this.invoke("trecho/embarque", dto);
	}

	@Override
	public void desembarque(LocalizacaoDTO localizacao, TrechoDTO trecho) throws RemoteException, ProxyRuntimeException {
		TrechoLocalizacaoDTO dto = new TrechoLocalizacaoDTO();
		dto.setLocalizacao(localizacao);
		dto.setTrecho(trecho);
		
		this.invoke("trecho/desembarque", dto);
	}
}
